export interface Script { changes(): TypeScript.TextChangeRange[];
_cachedSnapshot: TypeScript.IScriptSnapshot;
class TypeScriptDocumentSnapshot implements TypeScript.IScriptSnapshot { private _text: string = null;
constructor(public scriptData: TypeScriptService.Script) { if (this.scriptData.changes)
this.version = this.scriptData.changes().length;
getText(start: number, end: number): string { var text = this._getText();
var result = text.slice(start, end);
var text = this._getText();
getLineStartPositions(): number[] { var text = this._getText();
var result = TypeScript.TextUtilities.parseLineStarts(text);
getChangeRange(oldSnapshot: TypeScript.IScriptSnapshot): TypeScript.TextChangeRange { var baseVersion = (<any>oldSnapshot).version || 0;
return this.getTextChangeRangeSinceVersion(baseVersion);
getTextChangeRangeSinceVersion(scriptVersion: number): TypeScript.TextChangeRange { if (!this.scriptData.changes)
return TypeScript.TextChangeRange.unchanged;
var chunk = this.scriptData.changes().slice(scriptVersion);
var result = TypeScript.TextChangeRange.collapseChangesAcrossMultipleVersions(chunk);
this._text = this.scriptData.text ? this.scriptData.text() : <string><any>this.scriptData;